package com.ssm.controller;

import com.ssm.po.Product;
import com.ssm.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/product")
public class ProductController {
    @Autowired
    ProductService productService;

    /**
     * 查询所有商品
     *
     * @return
     */
    @GetMapping("/findAll")
    public String findAll(Model model) {
        List<Product> products = productService.findAll();
        model.addAttribute("products", products);// 将products添加到request域
        return "productList";
    }

    /**
     * 根据主键删除商品
     *
     * @param pid
     * @return
     */
    @GetMapping("/delete")
    public String delete(Integer pid) {
        productService.deleteByPid(pid);
        return "redirect:/product/findAll";
    }

    /**
     * 跳转到添加商品的页面
     *
     * @return
     */
    @GetMapping("/addProduct")
    public String addProduct() {
        return "addProduct";
    }

    /**
     * 保存添加的商品信息
     */
    @PostMapping("/saveAdd")
    public String saveAdd(Product product) {
        productService.saveProduct(product);
        return "redirect:/product/findAll"; // 重新请求查询数据库
    }

    /**
     * 跳转到更新页面,并回显原始的商品数据
     */
    @GetMapping("/updateProduct")
    public String updateProduct(Integer pid, Model model) { // 回显
        // 1.根据主键查询商品
        Product product = productService.findByPid(pid);

        // 2.将Product添加到request域
        model.addAttribute("product", product);

        // 3.转发到修改页面回显数据
        return "editProduct";
    }

    /**
     * 保存添加的商品信息
     */
    @PostMapping("/saveUpdate")
    public String saveUpdate(Product product) {
        productService.updateProduct(product);
        return "redirect:/product/findAll"; // 重新请求查询数据库
    }




}
